package com.cskaoyan.javase.basic._1identifier;

/**
 * 标识符(重点,第一天课程中最重要的内容)
 *  问题1：什么是标识符？
 * 上面我们提到过，编程的过程就是变量使用的过程。
 * 在这个使用变量的过程中，毫无疑问是需要知道变量的名字，才能更方便得去使用它。
 * 而在Java代码中，使用 标识符 表示各种各样的名字，也包括变量名。
 *
 *  问题2：标识符有什么用？
 * 上面已经说过了，标识符是一个表示名字的字符串。
 *
 *  问题3：需要标识符起名字的常见结构有哪些？
 *  主要有：
 *      1.类名（包括后面会学习的接口名、注解名等）
 *      2.方法名（main就是一个方法名）
 *      3.变量名
 *      4.包名
 *
 * 标识符命名规范(重点)
 * 从两个维度来看这个问题:
 *      1.从语法角度上来说
 *          对于标识符而言，如果不符合下列语法要求，会直接编译报错。
 *          标识符的开头必须是：
 *              字母（A~Z 和 a~z）
 *              下划线（_）
 *              美元符号（$）
 *              Unicode 字符集中编号为0xC0以及它后面的所有符号
 *              Java代码当中:
 *              数字以"0X,0x"开头是一个十六进制数
 *              数字以"0b"开头是一个二进制数
 *              数字以"0"开头是一个八进制数
 *              如果没有上述开头,就是十进制
 *
 *          标识符的组成必须是：
 *              数字（0~9）
 *              字母（A~Z 和 a~z）
 *              美元符号（$）
 *              下划线（_）
 *              Unicode 字符集中编号为0xC0以及它后面的所有符号
 *          几个注意事项：
 *              标识符不能以数字开头。
 *              不能是Java中的关键字和保留字。
 *              标识符严格区分大小写。 class不同于Class
 *
 *      2.从约定俗称的规范上来说
 *       实际上我们程序员之间约定:
 *          a.标识符的命名只使用英文字母和阿拉伯数字
 *          b.尽量使用合法的英文单词(少数特殊情况可以用拼音)
 *          c.不要使用"$","$"在命名中有特殊含义,建议程序员不要选择使用它
 *          d.尽量不要使用"_",Java中的"_"也有特殊含义,尽量不要使用它
 *
 *      驼峰命名法
 *      小驼峰式命名法
 *      多个单词组合成一个字符串
 *      第一个单词的首字母 小写,从第二个单词开始，首字母都要大写。
 *      例如：myName，myFirstJavaProgram
 *      如果就一个单词,直接小写即可
 *      比如name,age
 *
 *      大驼峰式命名法
 *      多个单词组合成一个字符串
 *      第一个单词的首字母 大写 。从第二个单词开始，首字母都要大写
 *      例如：MyName，MyFirstJavaProgram
 *      如果就一个单词,直接小写即可
 *      比如Name,Age
 *
 * 具体来说:
 *      1.类名（包括后面会学习的接口名、注解名等）应该使用大驼峰命名法。
 *      2.变量和方法的命名标识符应该使用小驼峰命名法。
 *
 * 包名的命名：
 *
 * 多数公司开发的包名会 以反转公司的域名作为开头。
 * 例如在百度做开发，项目的包名开头应该是com.baidu.xxx
 * com.cskaoyan
 * 包名的 单词字母应该全部小写，禁止使用任何大写。
 * 而且包名中比较少见写数字(几乎没有)
 * 多级包名用"."隔开。
 *
 * 约定: 为了方便大家课下看代码,我们把包名以"_序号"卡头
 * 这在开发中是绝对错误的错发,请大家不要模仿.
 *
 * 除此之外，还有一些统一的规范，也必须要遵守：
 *      1.标识符的命名开头和结尾都禁止使用下划线"_"和美元符号"$"。
 *      2.任何标识符的命名都禁止使用莫名其妙的字母组合、拼音或者拼音英文组合，更不能直接使用中文。特殊地如baidu、beijing或者和业务相关的拼音除外。
 *
 * @since 15:55
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        int a = 10;
        // int 123 = 123;
        // 黄色是代码中的警告信息,往往是代码不规范,往往不影响运行
        // Non-ASCII characters in an com.cskaoyan.javase.basic._1identifier.
        int 长风;
        double 我爱你;
        int Class;
        // int a123#;
        // int _98.3;
        // 像空格,回车,换行,制表等这些看起来什么都没有的东西,在计算机中也属于字符,属于控制字符
        // int Hello  World;
        int 好きだ;
        int age;
        // 错误的写法
        int Age;
        // 小写的字母"L"和数字"1"不要一起使用
        // 如果用"L"一律大写
        // 长度"length" l1,l2,l3 不要这么写,应该写len1,len2,len3
        int l1 = 11;
    }
}

class Student {
}

// class Studnet{}
class A {
}

// 错误的写法
class a {
}